package initialize

import (
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"go.uber.org/zap"
	"mxshop-api/user-web/global"
)

// GetEnv 获取环境变量中的bool值
func GetEnv(env string) bool {
	viper.AutomaticEnv()
	return viper.GetBool(env)
}

func InitConfig() {
	v := viper.New()
	// 设置配置的文件路径
	v.SetConfigFile("user-web/config.yaml")
	if err := v.ReadInConfig(); err != nil {
		zap.S().Errorf("读取配置文件失败:%s", err.Error())
		return
	}

	if err := v.Unmarshal(global.ServerConfig); err != nil {
		zap.S().Errorf("反序列化配置信息失败：%s", err.Error())
		return
	}
	zap.S().Infof("配置信息:%#v", global.ServerConfig)

	// viper监控文件变化
	v.WatchConfig()
	v.OnConfigChange(func(in fsnotify.Event) {
		zap.S().Infof("配置文件产生变化:%s", in.Name)
		_ = v.ReadInConfig()
		_ = v.Unmarshal(global.ServerConfig)
		zap.S().Infof("配置信息:%#v", global.ServerConfig)
	})
}
